All files / src/services notifications.ts

0% Statements 0/9
100% Branches 0/0
0% Functions 0/2
0% Lines 0/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                                                                       
import { apiService } from './api';
import { ApiResult } from '@/types';
 
export interface Notification {
  id: string;
  notification_type: 'info' | 'success' | 'warning' | 'error';
  title: string;
  message: string;
  count?: number;
  priority: 'high' | 'medium' | 'low';
  created_at: string;
  action_url?: string;
}
 
export interface NotificationsResponse {
  notifications: Notification[];
  total_count: number;
  unread_count: number;
}
 
class NotificationsService {
  async getResellerNotifications(): Promise<ApiResult<NotificationsResponse>> {
    try {
      return await apiService.get<NotificationsResponse>('/api/reseller/notifications');
    } catch {
      return {
        success: false,
        error: {
          error: 'Failed to fetch notifications',
          details: 'Could not load notifications',
          timestamp: new Date().toISOString()}
      };
    }
  }
 
  async getAdminNotifications(): Promise<ApiResult<NotificationsResponse>> {
    try {
      return await apiService.get<NotificationsResponse>('/api/admin/notifications');
    } catch {
      return {
        success: false,
        error: {
          error: 'Failed to fetch notifications',
          details: 'Could not load notifications',
          timestamp: new Date().toISOString()}
      };
    }
  }
}
 
export const notificationsService = new NotificationsService();